
function print_table(t)
	for k,v in pairs(t) do
		if type(v) == "table" then
			print("key" .. k .. "---------------")
			print_table(v)
		else
			print("key = " .. k .. ", val = " .. v)
		end

	end
	return 1,2
end


function findPos(pos, num, span)

	assert(num > 0)

	local poslist = {}
	local x = pos.x
	local z = pos.z

	local span  = span or 1
	local n = math.ceil((math.sqrt(num)-1)/2)

	for i = x- (n * span), x + (n*span), span do
		for j = z - n * span, z + n * span, span do
			if #poslist >= num then
				break
			end
			table.insert(poslist, {i , j})
		end
	end

	return poslist

	--	local poslist = {}
--	local x = pos.x
--	local z = pos.z
--
--	table.insert(poslist, {x, z})
--	if num <= 1 then
--		return poslist
--	end
--
--	local m = math.ceil((num-1) / 4)
--	local n = (num-1) % 4
--
--	for i = 1, m do
--		table.insert(poslist, { x + i*span, z })
--		table.insert(poslist, { x - i*span, z })
--		table.insert(poslist, { x, z + i*span })
--		table.insert(poslist, { x, z - i*span })
--	end
--
--	if n == 0 then
--		return poslist
--	end
--
--	m = m + 1;
--	if n > 0 then
--		table.insert(poslist, { x + m*span, z })
--	end
--	if n > 1 then
--		table.insert(poslist, { x - m*span, z })
--	end
--	if n > 2 then
--		table.insert(poslist, { x , z + m*span })
--	end
--
--	return poslist

end

local pos = { x = 100, z = 30}

local ps = findPos(pos, 2, 6)

print_table(ps)

